//package com.ruoyi.quartz.task;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.ruoyi.common.core.domain.AjaxResult;
//import com.ruoyi.framework.manager.AsyncManager;
//import com.ruoyi.quartz.domain.SysJob;
//import com.ruoyi.quartz.mapper.CornLogMapper;
//import com.ruoyi.quartz.service.IOrderService;
//import com.ruoyi.quartz.service.ISysJobService;
//import com.ruoyi.system.domain.DTO.CargoInfoDTO;
//import com.ruoyi.system.domain.DTO.OrderJobDetail;
//import com.ruoyi.system.domain.DTO.SysOrderDto;
//import com.ruoyi.system.domain.SysUser;
//import com.ruoyi.system.domain.vo.CornLog;
//import com.ruoyi.system.domain.vo.InstantBookingVo;
//import com.ruoyi.system.domain.vo.OrderJobLog;
//import com.ruoyi.system.domain.vo.OrderJobVo;
//import org.quartz.SchedulerException;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.TimerTask;
//
///**
// * 一秒多次的请求方式
// */
//@Component("fastTask")
//public class FastTask {
//    @Autowired
//    private ISysJobService jobService;
//    @Autowired
//    private IOrderService orderService;
//    @Autowired
//    private CornLogMapper cornLogMapper;
//
//
//    public void saveOrder(String jobName)  {
//        long start = System.currentTimeMillis();
//        String name = Thread.currentThread().getName();
//        String main = "CycleTask.execute()..." + name;
//        System.out.println(main);
//        int num = 1;
//        SysJob job = new SysJob();
//        job = jobService.selectJobByName(jobName);
//        if (job != null) {
//            OrderJobVo orderJobVo = new OrderJobVo();
//            orderJobVo = jobService.selectOrderJobVoByJobId(job.getJobId());
//            if (orderJobVo != null) {
//                if(orderJobVo.getIsFor() == 3){
//                    num = 180;
//                }else{
//                    num = orderJobVo.getQueryCount();
//                }
//            }
//        }
//        for (int i = 0; i < num; i++) {
//            AsyncManager.me().execute(new TimerTask() {
//                @Override
//                public void run() {
//                    String name1 = Thread.currentThread().getName();
//                    System.out.println(name1+"..."+name1 + "...start");
//                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
//                    //添加查询日志
//                    CornLog cornLog = new CornLog();
//                    cornLog.setThreadName(name1);
//                    cornLog.setJobName(jobName);
//                    cornLog.setBusinessType("定时秒杀刷新并下单");
//                    cornLog.setOperationType("定时");
//                    cornLog.setRequestDate(simpleDateFormat.format(new Date()));
//                    cornLog.setRequestData(jobName);
//
//                    try {
//                        getDataCreateOrder(jobName);
//                        System.out.println(name1+"--"+Thread.currentThread().getName() + "...end");
//                        long end = System.currentTimeMillis();
//                        System.out.println(name1+"..."+"总共耗时： " + (end - start)+"...成功结束");
//
//                        cornLog.setResponeDate(simpleDateFormat.format(new Date()));
//                        cornLog.setResponeData("");
//                        cornLog.setOperationName("system");
//                        cornLog.setContent(null);
//                        cornLog.setRemark("总共耗时： " + (end - start)+"...成功结束");
//                        cornLog.setCreateBy("system");
//                        //添加
//                        cornLogMapper.insertCornLog(cornLog);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                        long end = System.currentTimeMillis();
//                        System.out.println(name1+"--"+"总共耗时： " + (end - start)+"...异常结束");
//
//                        cornLog.setResponeDate(simpleDateFormat.format(new Date()));
//                        cornLog.setResponeData("");
//                        cornLog.setOperationName("system");
//                        cornLog.setContent(null);
//                        cornLog.setRemark("总共耗时： " + (end - start)+"...异常结束");
//                        cornLog.setCreateBy("system");
//                        //添加
//                        cornLogMapper.insertCornLog(cornLog);
//                    }
//                }
//            });
//        }
//    }
//
//
//    public void getDataCreateOrder(String jobName) throws SchedulerException {
//        SysJob job = new SysJob();
//        job = jobService.selectJobByName(jobName);
//        try {
//
//            if (job != null) {
//                OrderJobVo orderJobVo = new OrderJobVo();
//                orderJobVo = jobService.selectOrderJobVoByJobId(job.getJobId());
//                if (orderJobVo != null) {
//                    if (orderJobVo.getEndDate() != null && orderJobVo.getEndDate().trim().length() > 0) {
//                        if ("1899-12-13".equals(orderJobVo.getEndDate())) {
//                            orderJobVo.setEndDate(null);
//                        }
//                    }
//                    //逻辑
//                    Boolean result = quartzOrder(orderJobVo);
//                    if (result) {
//                        //暂停定时任务
//                        jobService.pauseJob(job);
//                        OrderJobLog orderJobLog = new OrderJobLog();
//                        BeanUtils.copyProperties(job, orderJobLog);
//                        orderJobLog.setJobId(job.getJobId().toString());
//                        orderJobLog.setRemark("正常执行后进行删除");
//                        jobService.insertOrderJobLog(orderJobLog);
//                    }
//                } else {
//                    //暂停定时任务
//                    jobService.pauseJob(job);
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            jobService.pauseJob(job);
//            OrderJobLog orderJobLog = new OrderJobLog();
//            BeanUtils.copyProperties(job, orderJobLog);
//            orderJobLog.setJobId(job.getJobId().toString());
//            orderJobLog.setRemark("程序执行异常，删除,异常：" + e.getMessage());
//            jobService.insertOrderJobLog(orderJobLog);
//        }
//    }
//
//    /**
//     * 定时执行抢单逻辑
//     *
//     * @param orderJobVo
//     * @return
//     */
//    public Boolean quartzOrder(OrderJobVo orderJobVo) throws ParseException{
//        SysJob sysJob = jobService.selectJobById(orderJobVo.getJobId());
//        //条件查询商品信息
//        SysOrderDto sysOrderDto = new SysOrderDto();
//        sysOrderDto.setPorCityId(orderJobVo.getPorCityId());
//        sysOrderDto.setFndCityId(orderJobVo.getFndCityId());
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        sysOrderDto.setStartDate(sdf.parse(orderJobVo.getStartDate() + " 00:00:00"));
//        if (orderJobVo.getEndDate() != null && orderJobVo.getEndDate().trim().length() > 0) {
//            sysOrderDto.setEndDate(sdf.parse(orderJobVo.getEndDate() + " 00:00:00"));
//        }
//        if(sysJob!=null){
//            sysOrderDto.setJobName(sysJob.getJobName());
//        }
//        //查询
//        sysOrderDto.setPageSize(50);
//        sysOrderDto.setPageNum(1);
//        SysUser sysUser = new SysUser();
//        sysUser.setLoginName(orderJobVo.getCreateBy());
//        sysOrderDto.setSysUser(sysUser);
//        sysOrderDto.setType("定时");
//        sysOrderDto.setProductType(orderJobVo.getProductType());
//        List<InstantBookingVo> queryInstantBookingVoList = new ArrayList<>();
//        queryInstantBookingVoList = orderService.selectOrderListBak(sysOrderDto);
//
//        //过滤掉库存为0的商品
//        List<InstantBookingVo> instantBookingVoList = new ArrayList<>();
//        for (InstantBookingVo forInstantBookingVo : queryInstantBookingVoList) {
//            if (forInstantBookingVo.getInventoryCount() > 0) {
//                instantBookingVoList.add(forInstantBookingVo);
//            }
//        }
//
//        if(instantBookingVoList.size() > 0){
//            InstantBookingVo forInstantBookingVo = instantBookingVoList.get(0);
//
//            //查询下单明细信息
//            List<OrderJobDetail> orderJobDetailList = new ArrayList<>();
//            orderJobDetailList = orderService.selectDetailsByOrderJobId(orderJobVo.getId());
//            List<SysOrderDto> sysOrderDtoList = new ArrayList<>();
//            if(orderJobDetailList != null && !orderJobDetailList.isEmpty() && orderJobDetailList.size() > 0){
//                for (OrderJobDetail orderJobDetail : orderJobDetailList) {
//                    SysOrderDto sysOrderDto1 = new SysOrderDto();
//                    sysOrderDto1.setId(forInstantBookingVo.getId());
//                    sysOrderDto1.setPorCityId(orderJobVo.getPorCityId());
//                    sysOrderDto1.setFndCityId(orderJobVo.getFndCityId());
//
//                    if("20GP".equals(orderJobDetail.getCcxx().trim())){
//                        if(forInstantBookingVo.getInventoryCount() >= orderJobDetail.getCount()){
//                            sysOrderDto1.setTwentyGPCount(orderJobDetail.getCount().toString());
//                        }else{
//                            sysOrderDto1.setTwentyGPCount(forInstantBookingVo.getInventoryCount().toString());
//                        }
//                    }else if ("40GP".equals(orderJobDetail.getCcxx().trim())){
//                        if(forInstantBookingVo.getInventoryCount() >= orderJobDetail.getCount()){
//                            sysOrderDto1.setFortyGPCount(orderJobDetail.getCount().toString());
//                        }else{
//                            sysOrderDto1.setFortyGPCount(forInstantBookingVo.getInventoryCount().toString());
//                        }
//                    }else if ("40HQ".equals(orderJobDetail.getCcxx().trim())){
//                        if(forInstantBookingVo.getInventoryCount() >= orderJobDetail.getCount()){
//                            sysOrderDto1.setFortyHQCount(orderJobDetail.getCount().toString());
//                        }else{
//                            sysOrderDto1.setFortyHQCount(forInstantBookingVo.getInventoryCount().toString());
//                        }
//                    }else if ("20RF".equals(orderJobDetail.getCcxx().trim())){
//                        if(forInstantBookingVo.getInventoryCount() >= orderJobDetail.getCount()){
//                            sysOrderDto1.setTwentyRFCount(orderJobDetail.getCount().toString());
//                        }else{
//                            sysOrderDto1.setTwentyRFCount(forInstantBookingVo.getInventoryCount().toString());
//                        }
//                    }else if ("40RQ".equals(orderJobDetail.getCcxx().trim())){
//                        if(forInstantBookingVo.getInventoryCount() >= orderJobDetail.getCount()){
//                            sysOrderDto1.setFortyRQCount(orderJobDetail.getCount().toString());
//                        }else{
//                            sysOrderDto1.setFortyRQCount(forInstantBookingVo.getInventoryCount().toString());
//                        }
//                    }
//
//                    sysOrderDto1.setTwentyGPPrice(forInstantBookingVo.getTwentyGPPrice());
//                    sysOrderDto1.setFortyGPPrice(forInstantBookingVo.getFortyGPPrice());
//                    sysOrderDto1.setFortyHQPrice(forInstantBookingVo.getFortyHQPrice());
//                    sysOrderDto1.setTwentyRFPrice(forInstantBookingVo.getTwentyRFPrice());
//                    sysOrderDto1.setFortyRQPrice(forInstantBookingVo.getFortyRQPrice());
//                    sysOrderDto1.setIncludeInsurance(orderJobVo.getIncludeInsurance());
//                    sysOrderDto1.setShipperId(orderJobVo.getShipperId());
//                    sysOrderDto1.setConsigneeId(orderJobVo.getConsigneeId());
//                    sysOrderDto1.setJobName(sysJob.getJobName());
//                    SysUser sysUser1 = new SysUser();
//                    sysUser1.setUserId(orderJobVo.getUserId());
//                    sysUser1.setEmail(orderJobVo.getEmail());
//                    sysUser1.setPhonenumber(orderJobVo.getPhonenumber());
//                    sysUser1.setLoginIp(orderJobVo.getLoginIp());
//                    sysUser1.setLoginName(orderJobVo.getLoginName());
//                    sysUser1.setLoginDate(orderJobVo.getLoginDate());
//                    sysOrderDto1.setSysUser(sysUser1);
//                    sysOrderDto1.setProductType(orderJobVo.getProductType());
//                    if ("冷藏冷箱".equals(orderJobVo.getProductType()) && orderJobVo.getCargoInfo() != null && orderJobVo.getCargoInfo().trim().length() > 0) {
//                        JSONObject jsonObject = JSONObject.parseObject(orderJobVo.getCargoInfo());
//                        CargoInfoDTO cargoInfoDTO = JSON.toJavaObject(jsonObject, CargoInfoDTO.class);
//                        if (cargoInfoDTO != null) {
//                            if (cargoInfoDTO.getReeferTemperatureType() != null) {
//                                sysOrderDto1.setReeferTemperatureType(cargoInfoDTO.getReeferTemperatureType());
//                            }
//                            if (cargoInfoDTO.getReeferTemperatureValue() != null) {
//                                sysOrderDto1.setReeferTemperatureValue(cargoInfoDTO.getReeferTemperatureValue());
//                            }
//                            if (cargoInfoDTO.getReeferVentilationType() != null) {
//                                sysOrderDto1.setReeferVentilationType(cargoInfoDTO.getReeferVentilationType());
//                            }
//                            if (cargoInfoDTO.getReeferVentilationValue() != null) {
//                                sysOrderDto1.setReeferVentilationValue(cargoInfoDTO.getReeferVentilationValue());
//                            }
//                            if (cargoInfoDTO.getReeferGenSetType() != null) {
//                                sysOrderDto1.setReeferGenSetType(cargoInfoDTO.getReeferGenSetType());
//                            }
//                            if (cargoInfoDTO.getReeferHumidityValue() != null) {
//                                sysOrderDto1.setReeferHumidityValue(cargoInfoDTO.getReeferHumidityValue().toString());
//                            }
//                        }
//                    }
//                    sysOrderDtoList.add(sysOrderDto1);
//                }
//            }
//
//
//
//            if(sysOrderDtoList != null && !sysOrderDtoList.isEmpty() && sysOrderDtoList.size() > 0){
//                for (SysOrderDto forSysOrderDto:sysOrderDtoList) {
//                    AsyncManager.me().execute(new TimerTask() {
//                        @Override
//                        public void run() {
//                            try {
//                                //下单
//                                AjaxResult ajaxResult = orderService.saveOrderBak(forSysOrderDto, "定时");
////                                if (Integer.parseInt(ajaxResult.get("code").toString()) == 0) {
////                                    return Boolean.TRUE;
////                                } else {
////                                    return Boolean.FALSE;
////                                }
//                            } catch (Exception e) {
//                                e.printStackTrace();
//                            }
//                        }
//                    });
//                }
//            }
//            return Boolean.TRUE;
//        }else {
//            return false;
//        }
//    }
//
//
//}
